package org.wu.framework.lazy.orm.core.persistence.reverse;


import org.wu.framework.lazy.orm.core.config.ReverseEngineering;
import org.wu.framework.lazy.orm.core.config.enums.OrmArchitecture;

/**
 * description 逆向工程 顶级接口 记录class的导入
 *
 * @author 吴佳伟
 * @date 2023/02/13 17:10
 */
public interface JavaReverseEngineering {

    /**
     * 创建 class 上下文代码
     *
     * @return class 上下文代码
     */
    String createJavaContextCode();


    /**
     * 创建Java文件
     *
     * @param resourceFilePrefix 文件前缀
     * @return 创建Java文件
     */
    String createJavaFile(String resourceFilePrefix);

    /**
     * 逆向工程 表信息
     * @return 逆向工程 表信息
     */

    ReverseClassLazyTableEndpoint getReverseClassLazyTableEndpoint();

    /**
     * 获取逆向工程配置
     * @return     ReverseEngineering
     */
    ReverseEngineering getReverseEngineering();

    /**
     * 获取 ORM 类型
     * @return ORM 类型
     */
    default OrmArchitecture getOrmArchitecture(){
        return getReverseEngineering().getOrmArchitecture();
    }

}
